﻿/*
 * @author				: Willian Silva
 * @create				: 20/03/2011
 * @last modified		: 26/07/2011
 * @version				: 1.2
 * @description			: Classe Pessoa.DoadorForm, responsável por manter um Doador no sistema
*/


Ext.ns('App.Pessoa');

App.Pessoa.DoadorForm = Ext.extend(Ext.Window,{
	
	title: 'Manutenção de Doadores'
	
	,constructor: function()
	{
		this.addEvents({
			 salvar	: true
			,excluir: true
		});
		
		App.Pessoa.DoadorForm.superclass.constructor.apply(this, arguments);
	}

	
	
	,initComponent: function(){
		
				
		this.abaDadosPrincipais = {
			title: 'Principal'
			,iconCls: 'aba_manterPessoa'
			,items:[
				{
					xtype: 'fieldset'
					, title: 'Dados Pessoais'
					, collapsible: true
					, defaultType: 'textfield'
					, defaults:{
						anchor: '100%'
					}	
					,items: [
						{
							xtype: 'hidden'
							,name:'codigo'
							,id: 'codigoDoador'
						}
						,{
							fieldLabel:'Nome'
							,name:'nome'
							,allowBlank: false
						}
						,{
							fieldLabel:'Email'
							,name:'email'
						}
						,{
							fieldLabel:'Apelido'
							,name:'apelido'
						}
						,{
							xtype:'masktextfield'
							,fieldLabel:'RG'
							,name:'rg'
							,mask: '99.999.999-9'
							,money: false
							,useMask: true
						}
						,{
							xtype:'masktextfield'
							,fieldLabel:'CPF'
							,name:'cpf'
							,mask: '999.999.999-99'
							,money: false
							,useMask: true
						}
						,{
							xtype: 'maskdatefield'
							,fieldLabel:'Data Nascimento'
							,name:'dataNascimento'
						},{
							xtype: 'combo'
								,fieldLabel: 'Sexo'
								,name: 'sexo'
								,store: [['M','Masculino'],['F','Feminino']]//sexo
								,displayField: 'sexo'
								,valueField: 'codigo'
								,hiddenName: 'sexo'
								,mode: 'local'
								,typeAhead: true
								,triggerAction: 'all'
								,allowBlank: false
						},{
							xtype: 'combo'
								,fieldLabel: 'Situação'
								,name: 'situacao'
								,store: [['S','Ativo'],['N','Inativo']]//sexo
								,displayField: 'situacao'
								,valueField: 'codigo'
								,hiddenName: 'situacao'
								,mode: 'local'
								,typeAhead: true
								,triggerAction: 'all'
								,allowBlank: false
						}
					]
				}

			]
			
		}
		
		this.abaDadosDoador = {
			title: 'Dados Doador'
			,iconCls: 'aba_doador'
			,items:[
				{
					xtype: 'fieldset'
					, title: 'Dados Doador'
					, collapsible: true
					, defaultType: 'textfield'
					, defaults:{
						anchor: '100%'
					}	
					,items: [
						{
							xtype: 'hidden'
							,name:'Pessoa_codigo'
						}
						,{
							fieldLabel:'Nome Empresa'
							,name:'nomeEmpresa'
						}
						,{
							xtype: 'combo'
								,fieldLabel: 'Tipo'
								,name: 'tipo'
								,store: [['PF','Pessoa fisica'],['PJ','Pessoa juridica']]//sexo
								,displayField: 'tipo'
								,valueField: 'codigo'
								,hiddenName: 'tipo'
								,mode: 'local'
								,typeAhead: true
								,triggerAction: 'all'
								,allowBlank: false 
						}

						,{
							xtype:'masktextfield'
							,fieldLabel:'CNPJ'
							,name:'cnpj'
							,mask: '99.999.999/9999-99'
							,money: false
							,useMask: true
						}
											
					]
				}

			]
			
		}		
		
		this.abaDadosContato = {
			title: 'Dados para contato'
			,iconCls	: 'aba_contato'
			
			
			
			,items:[
				{
					xtype: 'fieldset'
					, title: 'Contato'
					, collapsible: true
					, defaultType: 'textfield'
					, defaults:{
						anchor: '100%'
					}	
					,items: [
						{
							xtype:'masktextfield'
							,fieldLabel:'Tel. Residencial'
							,name:'telefoneResidencial'
							,mask: '(99)9999-9999'
							,money: false
							,useMask: true
						}
						,{
							xtype:'masktextfield'
							,fieldLabel:'Tel. Comercial'
							,name:'telefoneComercial'
							,mask: '(99)9999-9999'
							,money: false
							,useMask: true
						}
						,{
							xtype:'masktextfield'
							,fieldLabel:'Celular'
							,name:'celular'
							,mask: '(99)9999-9999'
							,money: false
							,useMask: true
						}
					
					]
				}	
			]
			
		}
		
		
		this.abaDadosEndereco = {
			title		: 'Dados de Endereço'
	        ,iconCls	: 'aba_endereco'
	        ,items:[
				{
					xtype: 'fieldset'
					, title: 'Endereço'
					, collapsible: true
					, defaultType: 'textfield'
					, defaults:{
						anchor: '100%'
					}	
					,items: [
						{
							fieldLabel:'Logradouro'
							,name:'endLogradouro'
						}
						,{
							fieldLabel:'Número'
							,name:'endNumero'
						}
						,{
							xtype:'masktextfield'
							,fieldLabel:'CEP'
							,name:'endCep'
							,mask: '99999-999'
							,money: false
							,useMask: true
						}
						,{
							fieldLabel:'Bairro'
							,name:'endBairro'
						}
						,{
							fieldLabel:'Cidade'
							,name:'endCidade'
						}
						,{
							xtype: 'combo'
							,fieldLabel: 'Estado'
							,name: 'endEstado'
							,store: uf
							,displayField: 'endEstado'
							,valueField: 'codigo'
							,hiddenName: 'endEstado'
							,mode: 'local'
							,typeAhead: true
							,triggerAction: 'all'
						}
						,{
							fieldLabel:'Complemento'
							,name:'endComplemento'
						}
					
					]
				}	
			]
	    }		
	
		this.tabDoador = new Ext.TabPanel({
			renderTo: Ext.getBody()
			,activeItem: 0
			,border: false
			,deferredRender: false
			,plain:true
			,autoScroll: true
			,ref: 'tabFormContato'
			

			,defaults:{
				layout: 'form'
				,labelWidth: 90 
				,defaultType: 'textfield'
				,autoHeight: true
				,bodyStyle: 'padding: 8px'
				,defaults: {
					blankText: 'Este campo é obrigatório'
					,anchor: '100%'
					,maxLengthText: 'Campo com limite de até <b>{0}</b> de caracteres!'
				}
			}
				
			,items: [this.abaDadosPrincipais, this.abaDadosDoador, this.abaDadosContato, this.abaDadosEndereco]
		});
		
		
		
	
		
		this.formDoador = new Ext.form.FormPanel({
			layout: 'form'
			,border: false
			,items: this.tabDoador
		});
		
		Ext.apply(this, {
			width: 730
			,height: 450
			,modal:true
			,layout: 'fit'
			,closeAction:'hide'
			,constrain	: true
			,maximizable: true
			,items: this.formDoador
			,buttons:[
				{
								text : 'Salvar'
								,iconCls : 'bt_salvar'
								,scope : this
								, handler: function(){
									if(Ext.getCmp('codigoDoador').getValue() !=  ""){
										this.alteraRegistro();
									}else{
										this.insereRegistro();
						}
					
					}
					
					
				}
				,{
					text: 'Cancelar'
					, iconCls: 'bt_cancelar'
					, scope	: this
					, handler: this.confimaCancelamento
				}
			]
		});
		
		App.Pessoa.DoadorForm.superclass.initComponent.call(this);
	}
	
	,setaDados: function(objetoDoador){
		this.formDoador.form.setValues(objetoDoador);
		
	}
	
	,resetForm: function(){
		this.formDoador.form.reset();
	}
	
	,show: function(){
		App.Pessoa.DoadorForm.superclass.show.apply(this,arguments);
		this.tabDoador.setActiveTab(0);
	}
	
	
	,insereRegistro: function(button){
		
		var form = this.formDoador.getForm();
		
		
		if(form.isValid())
		{
			this.params = this.formDoador.form.getValues(true);
			//this.params += "&action=inserir";
			
			
			this.loaderTarget = button;
			Ext.ux.Loader.start({sender: button, waitingText: 'Salvando...'});

			Ext.Ajax.request({
				url: baseURL + '/service/index.php?controller=DoadorController&service=inserir',
				success:  function(result){
					var objRetorno = Ext.decode(result.responseText);
					
					if(objRetorno.success == true){
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'success'
						});
					   
						Ext.ux.Loader.stop(this.loaderTarget);
						this.hide();
						Ext.getCmp('pessoaDoador').carregaGrid();
						
					}else{
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'error'
						});
					}
					
				},

				params: this.params,
				scope: this			
			});                    
		}else{
			Ext.ux.MessageBox.flash({
				msg: 'Preencha todos os campos obrigatórios',
				type: 'warning',
				pause: 3
			});
		}
		
	}
	
	
	,alteraRegistro: function(button){
		
		//alert("to alterando");
		var form = this.formDoador.getForm();
		
		
		if(form.isValid())
		{
			this.params = this.formDoador.form.getValues(true);
			//this.params += "&action=alterar";
			
			this.loaderTarget = button;
			Ext.ux.Loader.start({sender: button, waitingText: 'Salvando...'});

			Ext.Ajax.request({
				url: baseURL + '/service/index.php?controller=DoadorController&service=alterar',
				success:  function(result){
					var objRetorno = Ext.decode(result.responseText);
					
					if(objRetorno.success == true){
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'success'
						});
					   
						Ext.ux.Loader.stop(this.loaderTarget);
						this.hide();
						Ext.getCmp('pessoaDoador').carregaGrid();
						
					}else{
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'error'
						});
					}
					
				},

				params: this.params,
				scope: this			
			});                    
		}else{
			Ext.ux.MessageBox.flash({
				msg: 'Preencha todos os campos obrigatórios',
				type: 'warning',
				pause: 3
			});
		
		}
		
	}
	
	,confimaCancelamento: function(){
		Ext.MessageBox.confirm('Confirmação de cancelamento','Realmente deseja cancelar essa operação?', function(btn)
		{

			if(btn == 'yes')
			{
				this.hide();
			}
		}, this);

	}
	
	,throwValidationError : function(){
		Ext.ux.MessageBox.flash({
			msg: 'Os campos em destaque são obrigatórios!',
			type: 'error',
			pause: 3
		});
	}
});

Ext.reg('pessoaDoadorForm',App.Pessoa.DoadorForm);